package com.wang.interview.tests.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * @author: wang
 * @date: 2021/8/5 21:25
 * @description:
 */
public class I1 {
    public static void main(String[] args) throws IOException {
        /**
         * 如果没有该文件，只是new一个file实不会创建该文件的
         * 但是使用 createNewFile 就会创建，创建失败会抛出一个异常，或者使用流写入也会创建该文件，文件夹的创建原理类似
         */
        File file = new File("d:/123.txt");
        /*if (!file.exists()) {
            file.createNewFile();
        }*/
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write("你大爷绝对是你大爷".getBytes(StandardCharsets.UTF_8));
        fileOutputStream.close();
    }
}

/**
 * 测试文件过滤，遍历文件夹中的所有文件
 */
class I2 {
    public static void main(String[] args) throws IOException {
        /**
         * 如果没有该文件，只是new一个file实不会创建该文件的
         * 但是使用 createNewFile 就会创建，创建失败会抛出一个异常，或者使用流写入也会创建该文件，文件夹的创建原理类似
         */
        File file = new File("d:/123");
        showFiles(file);
    }

    public static void showFiles(File file) throws FileNotFoundException {
        if (!file.exists()){throw new FileNotFoundException();}
        if (!file.isDirectory()) {
            System.out.println(file.getName());
            return;
        }
        // 开始递归，过滤掉非txt的文件 // 这里不应该把目录拦截了
        File[] files = file.listFiles( f -> f.getName().endsWith("txt") || f.isDirectory() );
        for (File f : files) {
            showFiles(f);
        }
    }
}